92 research outputs found

    The Interactive Curry Observation Debugger iCODE

    Get PDF
    AbstractDebugging by observing the evaluation of expressions and functions is a useful approach for finding bugs in lazy functional and functional logic programs. However, adding and removing observation annotations to a program is an effort making the use of this debugging technique in practice uncomfortable. Having tool support for managing observations is desirable. We developed a tool that provides this ability for programmers. Without annotating expressions in a program, the evaluation of functions, data structures and arbitrary subexpressions can be observed by selecting them from a tree-structure representing the whole program. Furthermore, the tool provides a step by step performing of observations where each observation is shown in a separated viewer. Beside searching bugs, the tool can be used to assist beginners in learning the non-deterministic behavior of lazy functional logic programs. To find a surrounding area that contains the failure, the tool can furthermore show the executed part of the program by marking the expressions that are activated during program execution

    Homo- und Hetero-Metall-Amide des Tris(tert-butylamino)methylsilans : Polycyclen und Cluster mit Li, Na, Mg, Al und Tl

    Get PDF
    The hydrogen atoms attached to nitrogen in tris(tert-butyl-amino)methylsilane (1) can be substituted by metallic main-group elements in a quite general way. If 1 is treated with trimethylaluminium apart from the monosubstituted product MeSi(tBuNH)2(tBuNAlMe2) (2) the trisamide MeSi(tBuNAlMe2)3 (3) is obtained. In similar ways complete substitution of the amino hydrogen atoms in 1 yields the compounds MeSi[tBuNMgN(SiMe3)2]3 (6), [MeSi(tBuNLi)3]2 (10), and [MeSi(tBuNTl)3]2 (11), the later two being dimeric. If methyl-magnesium iodide is allowed to react with 1 the intermediate MeSi(tBuNMgI)3 (4) in some instances can be isolated as the THF adduct or may react with a further equivalent of the Grignard compound to generate the complex [MgI-(THF)5]+ [MeSi(tBuNMgI)3CH3 · THF]- (5). The aluminium compound 2 has been used to access to heterometallic amides combining aluminium and sodium as in MeSi(tBuNAlMe2)(tBuNNa)(tBuNH) (7) or magnesium and aluminium as in the dimeric compounds [MeSi(tBuNAlMe2)(tBuNH)(tBuNMgI)]2 (8) and [MeSi(tBuNAlMe2)(tBuNH)(tBuNMgMe)]2 (9). X-ray structure analyses reveal 3 (tricyclic SiN3Al3 skeleton with Al - N distances from 2.014 to 2.025 Å), 6 (tricyclic Si-N3Mg3 skeleton), and 7 [bicyclic SiN3AlNa skeleton with Na - N distances of 2.47(1) and 2.52(1) Å] to be monomeric even in the solid state. The compounds 8 and 9 (both pentacyclic with spiro magnesium atoms) form centrosymmetric dimers by Mg - I - Mg and Mg - (CH3) - Mg bridges, respectively. The dimers 10 and 11 are completely different in terms of chemical bonding: while in the lithium compound 10 a centrosymmetric polycycle is formed by principly ionic interactions of the lithium atoms with corresponding nitrogen atoms, the centrosymmetric dimer in 11 is held together by Tl - Tl bonds. The X-ray structure analysis of 5 reveals the anion containing a Mg-coordinated CH3-

    An Operational Semantics for Declarative Multi-Paradigm Languages1 1This work has been partially supported by CICYT TIC 2001-2705-C03-01, by the MCYT under grants HA2001-0059, HU2001-0019 and HI2000-0161, and by the DFG under grant Ha 2457/1-2.

    Get PDF
    AbstractPractical declarative multi-paradigm languages combine the main features of functional, logic and concurrent programming (e.g., laziness, sharing, higher-order, logic variables, non-determinism, search strategies). Usually, these languages also include interfaces to external functions as well as to constraint solvers. In this work, we introduce the first formal description of an operational semantics for realistic multi-paradigm languages covering all the aforementioned features in a precise and understandable manner. We also provide a deterministic version of the operational semantics which models search strategies explicitly. This deterministic semantics becomes essential to develop language-specific tools like program tracers, profilers, optimizers, etc. Finally, we extend the deterministic semantics in order to model concurrent computations. An implementation of the complete operational semantics has been undertaken

    Homo- und Hetero-Metall-Amide des Tris(tert-butylamino)methylsilans : Polycyclen und Cluster mit Li, Na, Mg, Al und Tl

    Get PDF
    The hydrogen atoms attached to nitrogen in tris(tert-butyl-amino)methylsilane (1) can be substituted by metallic main-group elements in a quite general way. If 1 is treated with trimethylaluminium apart from the monosubstituted product MeSi(tBuNH)2(tBuNAlMe2) (2) the trisamide MeSi(tBuNAlMe2)3 (3) is obtained. In similar ways complete substitution of the amino hydrogen atoms in 1 yields the compounds MeSi[tBuNMgN(SiMe3)2]3 (6), [MeSi(tBuNLi)3]2 (10), and [MeSi(tBuNTl)3]2 (11), the later two being dimeric. If methyl-magnesium iodide is allowed to react with 1 the intermediate MeSi(tBuNMgI)3 (4) in some instances can be isolated as the THF adduct or may react with a further equivalent of the Grignard compound to generate the complex [MgI-(THF)5]+ [MeSi(tBuNMgI)3CH3 · THF]- (5). The aluminium compound 2 has been used to access to heterometallic amides combining aluminium and sodium as in MeSi(tBuNAlMe2)(tBuNNa)(tBuNH) (7) or magnesium and aluminium as in the dimeric compounds [MeSi(tBuNAlMe2)(tBuNH)(tBuNMgI)]2 (8) and [MeSi(tBuNAlMe2)(tBuNH)(tBuNMgMe)]2 (9). X-ray structure analyses reveal 3 (tricyclic SiN3Al3 skeleton with Al - N distances from 2.014 to 2.025 Å), 6 (tricyclic Si-N3Mg3 skeleton), and 7 [bicyclic SiN3AlNa skeleton with Na - N distances of 2.47(1) and 2.52(1) Å] to be monomeric even in the solid state. The compounds 8 and 9 (both pentacyclic with spiro magnesium atoms) form centrosymmetric dimers by Mg - I - Mg and Mg - (CH3) - Mg bridges, respectively. The dimers 10 and 11 are completely different in terms of chemical bonding: while in the lithium compound 10 a centrosymmetric polycycle is formed by principly ionic interactions of the lithium atoms with corresponding nitrogen atoms, the centrosymmetric dimer in 11 is held together by Tl - Tl bonds. The X-ray structure analysis of 5 reveals the anion containing a Mg-coordinated CH3-

    A Pattern Logic for Prompt Lazy Assertions in Haskell

    Get PDF
    Assertions test expected properties of run-time values without disrupting the normal computation of a program. Here we present a library for enriching programs in the lazy language Haskell with assertions. Expected properties are written in an expressive pattern logic that combines pattern matching with logical operations and predicates. The presented assertions are lazy: they do not force evaluation but only examine what is evaluated by other parts of the program. They are also prompt: assertion failure is reported as early as possible, before a faulty value is used by the main computation

    A Pattern Logic for Prompt Lazy Assertions

    Get PDF
    Assertions test expected properties of run-time values without disrupting the normal computation of a program. Here we present a library for enriching programs in the lazy language Haskell with assertions. Expected properties are written in an expressive pattern logic that combines pattern matching with logical operations and predicates. The presented assertions are lazy: they do not force evaluation but only examine what is evaluated by other parts of the program. They are also prompt: assertion failure is reported as early as possible, before a faulty value is used by the main computation

    Monadic, prompt lazy assertions in Haskell

    Get PDF
    Assertions test expected properties of run-time values without disrupting the normal computation of a program. We present a library for enriching Haskell programs with assertions. Expected properties can be specified in a parser-combinator like language. The assertions are lazy: they do not force evaluation but only examine what is evaluated by the program. They are also prompt: assertion failure is reported as early as possible. The implementation is based on lazy observations and continuation-based coroutines

    Typeview: A Tool for Understanding Type Errors

    Get PDF
    In modern statically typed functional languages, type inference is used to determine the type of each function automatically. Whenever this fails, the compiler emits an error message that is often very complex. Sometimes the expression mentioned in the type error message is not the one that is wrong. We therefore implement an interactive tool that allows programmers to browse through the source code of their program and query the types of each expression. If a variable cannot be typed, we would like to present a set of possible types from which the user can decide which is wrong. This should help finding the origin of type errors without detailed knowledge of type inference on the user side

    Erlang-Style Distributed Haskell

    No full text
    We present an extension of the lazy functional programming language Haskell for distributed programming. This extension is motivated by the untyped eager functional language Erlang, which is successfully used in the development of distributed systems. The communication between processes is based on asynchronous message passing and a convenient access to the received messages with pattern matching. Communication between concurrent and distributed processes is programmed with the same functions, which makes it easy to implement distributed systems
    corecore